import type { Sequelize } from "sequelize";
import { admin as _admin } from "./admin";
import type { adminAttributes, adminCreationAttributes } from "./admin";
import { browse as _browse } from "./browse";
import type { browseAttributes, browseCreationAttributes } from "./browse";
import { comment as _comment } from "./comment";
import type { commentAttributes, commentCreationAttributes } from "./comment";
import { fans as _fans } from "./fans";
import type { fansAttributes, fansCreationAttributes } from "./fans";
import { favorite as _favorite } from "./favorite";
import type { favoriteAttributes, favoriteCreationAttributes } from "./favorite";
import { file as _file } from "./file";
import type { fileAttributes, fileCreationAttributes } from "./file";
import { like as _like } from "./like";
import type { likeAttributes, likeCreationAttributes } from "./like";
import { news as _news } from "./news";
import type { newsAttributes, newsCreationAttributes } from "./news";
import { note as _note } from "./note";
import type { noteAttributes, noteCreationAttributes } from "./note";
import { reply as _reply } from "./reply";
import type { replyAttributes, replyCreationAttributes } from "./reply";
import { search as _search } from "./search";
import type { searchAttributes, searchCreationAttributes } from "./search";
import { topic as _topic } from "./topic";
import type { topicAttributes, topicCreationAttributes } from "./topic";
import { user as _user } from "./user";
import type { userAttributes, userCreationAttributes } from "./user";

export {
  _admin as admin,
  _browse as browse,
  _comment as comment,
  _fans as fans,
  _favorite as favorite,
  _file as file,
  _like as like,
  _news as news,
  _note as note,
  _reply as reply,
  _search as search,
  _topic as topic,
  _user as user,
};

export type {
  adminAttributes,
  adminCreationAttributes,
  browseAttributes,
  browseCreationAttributes,
  commentAttributes,
  commentCreationAttributes,
  fansAttributes,
  fansCreationAttributes,
  favoriteAttributes,
  favoriteCreationAttributes,
  fileAttributes,
  fileCreationAttributes,
  likeAttributes,
  likeCreationAttributes,
  newsAttributes,
  newsCreationAttributes,
  noteAttributes,
  noteCreationAttributes,
  replyAttributes,
  replyCreationAttributes,
  searchAttributes,
  searchCreationAttributes,
  topicAttributes,
  topicCreationAttributes,
  userAttributes,
  userCreationAttributes,
};

export function initModels(sequelize: Sequelize) {
  const admin = _admin.initModel(sequelize);
  const browse = _browse.initModel(sequelize);
  const comment = _comment.initModel(sequelize);
  const fans = _fans.initModel(sequelize);
  const favorite = _favorite.initModel(sequelize);
  const file = _file.initModel(sequelize);
  const like = _like.initModel(sequelize);
  const news = _news.initModel(sequelize);
  const note = _note.initModel(sequelize);
  const reply = _reply.initModel(sequelize);
  const search = _search.initModel(sequelize);
  const topic = _topic.initModel(sequelize);
  const user = _user.initModel(sequelize);


  return {
    admin: admin,
    browse: browse,
    comment: comment,
    fans: fans,
    favorite: favorite,
    file: file,
    like: like,
    news: news,
    note: note,
    reply: reply,
    search: search,
    topic: topic,
    user: user,
  };
}
